'''
# encoding=utf-8

'''
import warnings

warnings.filterwarnings('ignore')
#显示中文
from pylab import *  #显示中文

mpl.rcParams['font.sans-serif'] = ['SimHei']  #显示中文
#画图中显示负号
import matplotlib

matplotlib.rcParams['axes.unicode_minus'] = False

import numpy as np
import matplotlib.pyplot as plt
import random

# 使用K-means底层，完成以下操作
# 数据集[[1, 2], [2, 2], [6, 8], [7, 8]]
# 1.	将数据集使用合适方式进行处理（10分）
X = np.array([[1, 2], [2, 2], [6, 8], [7, 8]])
# 2.	使用随机方式，初始化质心（10分）
C = X[random.sample(range(4), 2)];print(C)
# 3.	完成模型计算
# a)	设置循环5次（10分）
iters = 5

# b)	计算数据集中每个样本点到各个质心的距离，添加到列表中（20分）
while (iters>0) :
    iters -= 1
    B = [] #每个样本点到质心的距离
    for c in C:
        #计算每个点到质心的欧式距离
        dis = np.sqrt(((X - c)**2).sum(axis=1))
        # print(dis)
        B.append(dis)
        # print()
        # print(B)


# c)	计算距离距离哪个样本最近（20分）

    min_idx = np.argmin(np.array(B),axis=0)
    # print(min_idx)
    for i in range(len(C)):

# d)	使用均值更新质心（10分）
        C[i] = np.mean(X[min_idx == i],axis=0)

# 4.	打印样本的归属于哪一个簇（10分）
#打印所有样本的所属的簇
print(min_idx)

# 5.	打印质心位置（10分）
print(C)
